#ifndef TOOLS_H
#define TOOLS_H
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>

#define swap(a,b) do{typeof(a) t=a; a=b; b=t;}while(0)
#define ARR_SIZE(a) (sizeof(a)/sizeof(a[0]))

#ifndef DEBUG

#define debug(fmt,...) do{}while(0)

#else

#define debug(fmt,...)\
do{\
	printf("File:%s Line:%u Info:",__FILE__,__LINE__);\
	printf(fmt,##__VA_ARGS__);\
}while(0)

#endif//DEBUG

typedef enum KeyValue
{
	KeyEnter = 10,
	KeyBack = 127,
	KeyUp = 183,
	KeyDown,
	KeyRight,
	KeyLeft,
}KeyValue;

typedef enum Color
{
	Black=30,	// 黑
	Red,	// 红
	Green,	// 绿
	Yellow,	// 黄
	Blue,	// 蓝
	Purple,	// 紫
	Cyan,	// 青
	White,	// 白
}Color;

void clear_screen(void);

void clear_stdin(void);

char get_cmd(char start,char end);

char* get_str(char* str,size_t size);

char get_sex(void);

char* show_sex(char sex);

char* get_passwd(char* passwd,size_t size,bool flag);

void anykey_continue(void);

bool yes_or_no(void);

void show_msg(char* msg,float sec);

void show_err(char* err);

void show_color(const char* msg,Color color);

void show_cursor(void);

void hide_cursor(void);

void set_cursor(int x,int y);

void init_id(const char* path,uint64_t arr[],size_t size);

uint64_t get_id(const char* path,size_t index);

void save_data(const char* path,void* base,size_t size,size_t nmemb);

size_t load_data(const char* path,void* base,size_t size,size_t nmemb);

size_t file_size(const char* path);

#endif//TOOLS_H
